home *** CD-ROM | disk | FTP | other *** search
/ CD ROM Paradise Collection 4 / CD ROM Paradise Collection 4 1995 Nov.iso / program / swagg_m.zip / MISC.SWG / 0056_MAXMIN Bytes-Integers.pas < prev    next >
Pascal/Delphi Source File  |  1993-11-21  |  3KB  |  149 lines

  1. {$R-}
  2. UNIT MaxMin;
  3. (**) INTERFACE (**)
  4.   FUNCTION MaxS(A, B : ShortInt) : ShortInt;
  5.   FUNCTION MinS(A, B : ShortInt) : ShortInt;
  6.   FUNCTION MaxB(A, B : Byte)     : Byte;
  7.   FUNCTION MinB(A, B : Byte)     : Byte;
  8.   FUNCTION MaxI(A, B : Integer)  : Integer;
  9.   FUNCTION MinI(A, B : Integer)  : Integer;
  10.   FUNCTION MaxW(A, B : Word)     : Word;
  11.   FUNCTION MinW(A, B : Word)     : Word;
  12.   FUNCTION MaxL(A, B : LongInt)  : LongInt;
  13.   FUNCTION MinL(A, B : LongInt)  : LongInt;
  14.   FUNCTION MaxU(A, B : LongInt)  : LongInt;
  15.   FUNCTION MinU(A, B : LongInt)  : LongInt;
  16.  
  17. (**) IMPLEMENTATION (**)
  18.   FUNCTION MaxS(A, B : ShortInt) : ShortInt; Assembler;
  19.   ASM
  20.     MOV AL, A
  21.     CMP AL, B
  22.     JGE @no
  23.     MOV AL, B
  24.     @no:
  25.   END;
  26.  
  27.   FUNCTION MinS(A, B : ShortInt) : ShortInt; Assembler;
  28.   ASM
  29.     MOV AL, A
  30.     CMP AL, B
  31.     JLE @no
  32.     MOV AL, B
  33.     @no:
  34.   END;
  35.  
  36.   FUNCTION MaxB(A, B : Byte) : Byte; Assembler;
  37.   ASM
  38.     MOV AL, A
  39.     CMP AL, B
  40.     JAE @no
  41.     MOV AL, B
  42.     @no:
  43.   END;
  44.  
  45.   FUNCTION MinB(A, B : Byte) : Byte; Assembler;
  46.   ASM
  47.     MOV AL, A
  48.     CMP AL, B
  49.     JBE @no
  50.     MOV AL, B
  51.     @no:
  52.   END;
  53.  
  54.   FUNCTION MaxI(A, B : Integer) : Integer; Assembler;
  55.   ASM
  56.     MOV AX, A
  57.     CMP AX, B
  58.     JGE @no
  59.     MOV AX, B
  60.     @no:
  61.   END;
  62.  
  63.   FUNCTION MinI(A, B : Integer) : Integer; Assembler;
  64.   ASM
  65.     MOV AX, A
  66.     CMP AX, B
  67.     JLE @no
  68.     MOV AX, B
  69.     @no:
  70.   END;
  71.  
  72.   FUNCTION MaxW(A, B : Word) : Word; Assembler;
  73.   ASM
  74.     MOV AX, A
  75.     CMP AX, B
  76.     JAE @no
  77.     MOV AX, B
  78.     @no:
  79.   END;
  80.  
  81.   FUNCTION MinW(A, B : Word) : Word; Assembler;
  82.   ASM
  83.     MOV AX, A
  84.     CMP AX, B
  85.     JBE @no
  86.     MOV AX, B
  87.     @no:
  88.   END;
  89.  
  90.   FUNCTION MaxL(A, B : LongInt) : LongInt; Assembler;
  91.   ASM
  92.     MOV DX, Word(A+2)
  93.     MOV AX, Word(A)
  94.     CMP DX, Word(B+2)
  95.     JL @yes
  96.     JG @no
  97.     CMP AX, Word(B)
  98.     JGE @no
  99.     @yes:
  100.     MOV DX, Word(B+2)
  101.     MOV AX, Word(B)
  102.     @no:
  103.   END;
  104.  
  105.   FUNCTION MinL(A, B : LongInt) : LongInt; Assembler;
  106.   ASM
  107.     MOV DX, Word(A+2)
  108.     MOV AX, Word(A)
  109.     CMP DX, Word(B+2)
  110.     JG @yes
  111.     JL @no
  112.     CMP AX, Word(B)
  113.     JLE @no
  114.     @yes:
  115.     MOV DX, Word(B+2)
  116.     MOV AX, Word(B)
  117.     @no:
  118.   END;
  119.  
  120.   FUNCTION MaxU(A, B : LongInt) : LongInt; Assembler;
  121.   ASM
  122.     MOV DX, Word(A+2)
  123.     MOV AX, Word(A)
  124.     CMP DX, Word(B+2)
  125.     JB @yes
  126.     JA @no
  127.     CMP AX, Word(B)
  128.     JAE @no
  129.     @yes:
  130.     MOV DX, Word(B+2)
  131.     MOV AX, Word(B)
  132.     @no:
  133.   END;
  134.  
  135.   FUNCTION MinU(A, B : LongInt) : LongInt; Assembler;
  136.   ASM
  137.     MOV DX, Word(A+2)
  138.     MOV AX, Word(A)
  139.     CMP DX, Word(B+2)
  140.     JA @yes
  141.     JB @no
  142.     CMP AX, Word(B)
  143.     JBE @no
  144.     @yes:
  145.     MOV DX, Word(B+2)
  146.     MOV AX, Word(B)
  147.     @no:
  148.   END;
  149. END.